﻿using System;
using ASPNETVN.PORTAL.Components.Security;

namespace ASPNETVN.PORTAL.Components.UI
{
    public class EditItemPage : SecurePage
    {
        protected override void OnInit(EventArgs e)
        {
            if (!PortalSecurity.HasEditAuthorization(this.ModuleID))
            {
                PortalSecurity.AccessEditDenied();
            }

            if (this.ButtonUpdate != null)
            {
                this.ButtonUpdate.Click += this.ButtonUpdate_Click;
                this.ButtonUpdate.EnableViewState = false;
            }

            if (this.ButtonDelete != null)
            {
                this.ButtonDelete.Click += this.ButtonDelete_Click;                
                this.ButtonDelete.EnableViewState = false;
                this.ButtonDelete.CausesValidation = false;
                this.ButtonDelete.OnClientClick = "return confirm(\"Bạn có muốn xóa không?\")";
                this.ButtonDelete.Enabled = PortalSecurity.HasDeleteAuthorization(this.ModuleID);
                if (this.ItemID == 0) this.ButtonDelete.Enabled = false;
            }

            base.OnInit(e);
        }
        
        // ----------------------------------------------------------------------------------------
        
        public event EventHandler Update;
        protected virtual void OnUpdate(EventArgs e)
        {
            if (Update != null)
            {
                Update(this, e);
            }
            // Thực hiện kiểm tra quyền hạn trước khi cập nhật dữ liệu.
            if (PortalSecurity.HasEditAuthorization(this.ModuleID) == false)
            {
                PortalSecurity.AccessEditDenied();
            }
        }

        void ButtonUpdate_Click(Object sender, EventArgs e)
        {
            this.OnUpdate(e);
        }

        // ----------------------------------------------------------------------------------------
        
        public event EventHandler Delete;
        protected virtual void OnDelete(EventArgs e)
        {
            if (Delete != null)
            {
                Delete(this, e);
            }
            // Thực hiện kiểm tra quyền hạn trước khi xóa dữ liệu.
            if (PortalSecurity.HasDeleteAuthorization(ModuleID) == false)
            {
                PortalSecurity.AccessEditDenied();
            }
        }

        void ButtonDelete_Click(Object sender, EventArgs e)
        {
            this.OnDelete(e);
        }
    }
}